home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / glass / glass.lha / GLASS / contsens / check.afuncs.c next >
C/C++ Source or Header  |  1991-01-31  |  7KB  |  331 lines

  1.  
  2. /*   Copyright (C) 1990 Riet Oolman
  3.  
  4. This file is part of GLASS.
  5.  
  6. GLASS is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 1, or (at your option)
  9. any later version.
  10.  
  11. GLASS is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GLASS; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* file: check.afuncs.p
  21.    author: H. Oolman
  22.    last changed: 13-7-1990
  23.    purpose: access FUNCTIONs for the internal type representation for the
  24.             type checker
  25.    modifications:
  26.         p2c translated, tmc access procs.
  27. */
  28.  
  29. #include "handleds.h"
  30. #include "check.ds.h"
  31. #include "check.var.h"
  32.  
  33. typcrec *BuildSINGLEARROW(valtcarg, valtcres)
  34. typcrec *valtcarg, *valtcres;
  35. {
  36.   typcrec *result;
  37.  
  38.   result = (typcrec *)malloc(sizeof(typcrec));
  39.   result->kind = kindSINGLEARROW;
  40.   result->SINGLEARROW.tcarg = valtcarg;
  41.   result->SINGLEARROW.tcres = valtcres;
  42.   return result;
  43. }  /* BuildSINGLEARROW*/
  44.  
  45.  
  46. typcrec *BuildINT()
  47. {
  48.   typcrec *result;
  49.  
  50.   result = (typcrec *)malloc(sizeof(typcrec));
  51.   result->kind = kindINT;
  52.   return result;
  53. }  /* BuildINT*/
  54.  
  55.  
  56. typcrec *BuildFLOAT()
  57. {
  58.   typcrec *result;
  59.  
  60.   result = (typcrec *)malloc(sizeof(typcrec));
  61.   result->kind = kindFLOAT;
  62.   return result;
  63. }  /* BuildFLOAT*/
  64.  
  65.  
  66. typcrec *BuildBOOL()
  67. {
  68.   typcrec *result;
  69.  
  70.   result = (typcrec *)malloc(sizeof(typcrec));
  71.   result->kind = kindBOOL;
  72.   return result;
  73. }  /* BuildBOOL*/
  74.  
  75.  
  76. typcrec *BuildSTRING()
  77. {
  78.   typcrec *result;
  79.  
  80.   result = (typcrec *)malloc(sizeof(typcrec));
  81.   result->kind = kindSTRING;
  82.   return result;
  83. }  /* BuildSTRING*/
  84.  
  85.  
  86. typcrec *BuildSYSTY(valsysdirs, valsyscomp)
  87. dirgraphrec *valsysdirs;
  88. typcrec *valsyscomp;
  89. {
  90.   typcrec *result;
  91.  
  92.   result = (typcrec *)malloc(sizeof(typcrec));
  93.   result->kind = kindSYSTY;
  94.   result->SYSTY.sysdirs = valsysdirs;
  95.   result->SYSTY.syscomp = valsyscomp;
  96.   return result;
  97. }  /* BuildSYSTY*/
  98.  
  99.  
  100. typcrec *BuildEMPTYT()
  101. {
  102.   typcrec *result;
  103.  
  104.   result = (typcrec *)malloc(sizeof(typcrec));
  105.   result->kind = kindEMPTYT;
  106.   return result;
  107. }  /* BuildEMPTYT*/
  108.  
  109.  
  110. typcrec *BuildLOC(vallocname, valinst)
  111. symbol vallocname;
  112. long valinst;
  113. {
  114.   typcrec *result;
  115.  
  116.   result = (typcrec *)malloc(sizeof(typcrec));
  117.   result->kind = kindLOC;
  118.   result->LOC.locname = vallocname;
  119.   result->LOC.inst = valinst;
  120.   return result;
  121. }  /* BuildLOC*/
  122.  
  123.  
  124. typcrec *BuildBASETY(valbtname, valbnr, valorig)
  125. symbol valbtname;
  126. long valbnr;
  127. orig valorig;
  128. {
  129.   typcrec *result;
  130.  
  131.   result = (typcrec *)malloc(sizeof(typcrec));
  132.   result->kind = kindBASETY;
  133.   result->BASETY.btname = valbtname;
  134.   result->BASETY.bnr = valbnr;
  135.   result->BASETY.bor = valorig;
  136.   return result;
  137. }  /* BuildBASETY*/
  138.  
  139.  
  140. typcrec *BuildCT(valtcfirst, valtcrest)
  141. typcrec *valtcfirst, *valtcrest;
  142. {
  143.   typcrec *result;
  144.  
  145.   result = (typcrec *)malloc(sizeof(typcrec));
  146.   result->kind = kindCT;
  147.   result->CT.tcfirst = valtcfirst;
  148.   result->CT.tcrest = valtcrest;
  149.   return result;
  150. }  /* BuildCT*/
  151.  
  152.  
  153. typcrec *BuildALL(vallocs, valtcall)
  154. nminstrec *vallocs;
  155. typcrec *valtcall;
  156. {
  157.   typcrec *result;
  158.  
  159.   result = (typcrec *)malloc(sizeof(typcrec));
  160.   result->kind = kindALL;
  161.   result->ALL.locs = vallocs;
  162.   result->ALL.tcall = valtcall;
  163.   return result;
  164. }  /* BuildALL*/
  165.  
  166.  
  167. typcrec *BuildAPS()
  168. {
  169.   typcrec *result;
  170.  
  171.   result = (typcrec *)malloc(sizeof(typcrec));
  172.   result->kind = kindAPS;
  173.   return result;
  174. }  /* BuildAPS*/
  175.  
  176.  
  177. typcrec *BuildUNKNOWN(valunknm, valmustendemp, valmustconn)
  178. long valunknm;
  179. boolean valmustendemp, valmustconn;
  180. {
  181.   typcrec *result;
  182.  
  183.   result = (typcrec *)malloc(sizeof(typcrec));
  184.   result->kind = kindUNKNOWN;
  185.   result->UNKNOWN.unknm = valunknm;
  186.   result->UNKNOWN.mustendemp = valmustendemp;
  187.   result->UNKNOWN.mustconn = valmustconn;
  188.   return result;
  189. }  /* BuildUNKNOWN*/
  190.  
  191.  
  192. typcrec *BuildSOME(valtcpart, valsomnr)
  193. typcrec *valtcpart;
  194. long valsomnr;
  195. {
  196.   typcrec *result;
  197.  
  198.   result = (typcrec *)malloc(sizeof(typcrec));
  199.   result->kind = kindSOME;
  200.   result->SOME.tcpart = valtcpart;
  201.   result->SOME.somnr = valsomnr;
  202.   return result;
  203. }  /* BuildSOME*/
  204.  
  205.  
  206. typcrec *BuildINDIR(valtcind)
  207. typcrec *valtcind;
  208. {
  209.   typcrec *result;
  210.  
  211.   result = (typcrec *)malloc(sizeof(typcrec));
  212.   result->kind = kindINDIR;
  213.   result->INDIR.tcind = valtcind;
  214.   return result;
  215. }  /* BuildINDIR*/
  216.  
  217.  
  218. dirgraphrec *BuildCd(valdgfirst, valdgrest)
  219. dirgraphrec *valdgfirst, *valdgrest;
  220. {
  221.   dirgraphrec *result;
  222.  
  223.   result = (dirgraphrec *)malloc(sizeof(dirgraphrec));
  224.   result->kind = kindCd;
  225.   result->Cd.dgfirst = valdgfirst;
  226.   result->Cd.dgrest = valdgrest;
  227.   return result;
  228. }  /* BuildCd*/
  229.  
  230.  
  231. dirgraphrec *BuildOd(valbasedir)
  232. dirrec *valbasedir;
  233. {
  234.   dirgraphrec *result;
  235.  
  236.   result = (dirgraphrec *)malloc(sizeof(dirgraphrec));
  237.   result->kind = kindOd;
  238.   result->Od.basedir = valbasedir;
  239.   return result;
  240. }  /* BuildOd*/
  241.  
  242.  
  243. dirgraphrec *BuildSd(valdgpart, valdglast)
  244. dirgraphrec *valdgpart, *valdglast;
  245. {
  246.   dirgraphrec *result;
  247.  
  248.   result = (dirgraphrec *)malloc(sizeof(dirgraphrec));
  249.   result->kind = kindSd;
  250.   result->Sd.dgpart = valdgpart;
  251.   result->Sd.dglast = valdglast;
  252.   return result;
  253. }  /* BuildSd*/
  254.  
  255.  
  256. dirrec *BuildIN()
  257. {
  258.   dirrec *result;
  259.  
  260.   result = (dirrec *)malloc(sizeof(dirrec));
  261.   result->kind = kindINTO;
  262.   return result;
  263. }  /* BuildIN*/
  264.  
  265.  
  266. dirrec *BuildOUT()
  267. {
  268.   dirrec *result;
  269.  
  270.   result = (dirrec *)malloc(sizeof(dirrec));
  271.   result->kind = kindOUT;
  272.   return result;
  273. }  /* BuildOUT*/
  274.  
  275.  
  276. dirrec *BuildNON()
  277. {
  278.   dirrec *result;
  279.  
  280.   result = (dirrec *)malloc(sizeof(dirrec));
  281.   result->kind = kindNON;
  282.   return result;
  283. }  /* BuildNON*/
  284.  
  285.  
  286. nminstrec *Buildnminstptr(valnm, valinst)
  287. symbol valnm;
  288. long valinst;
  289. {
  290.   nminstrec *result;
  291.  
  292.   result = (nminstrec *)malloc(sizeof(nminstrec));
  293.   result->next = NULL;
  294.   result->nm = valnm;
  295.   result->inst = valinst;
  296.   return result;
  297. }  /* Buildnminstptr */
  298.  
  299.  
  300. Void Appendnminstptr(list, element, result)
  301. nminstrec *list, *element, **result;
  302. {
  303.   nminstrec *hdef;
  304.  
  305.   if (list == NULL) {
  306.     *result = element;
  307.     return;
  308.   }
  309.   hdef = list;
  310.   while (hdef->next != NULL)
  311.     hdef = hdef->next;
  312.   hdef->next = element;
  313.   *result = list;
  314. }  /* Appendnminstptr */
  315.  
  316.  
  317. long newname()
  318. {
  319.   /* delivers an unique name (number) for a yet unknown type */
  320.   long Result;
  321.  
  322.   Result = namessupply;
  323.   namessupply++;
  324.   return Result;
  325. }  /* newname */
  326.  
  327.  
  328.  
  329.  
  330. /* End. */
  331.